Internal - set if a new record filter has been defined.")
(defvar forms--modified-record-filter nil "\
Internal - set if a modified record filter has been defined.")
(defvar forms--dynamic-text nil "\
Internal - holds dynamic text to insert between fields.")
(defvar forms-fields nil "\
List with fields of the current forms. First field has number 1.")
(defun forms-mode (&optional primary) "\
Major mode to visit files in a field-structured manner using a form.
Commands (prefix with C-c if not in read-only mode):
\\{forms-mode-map}" (interactive) (byte-code " õ  ÃÄ!ÃÅ!ÃÆ!ÃÇ!ÃÈ!ÃÉ!ÃÊ!ÃË!ÌÍ!Î : ÏÐ!B ÏÑ!ÒVX ÏÓ!X ;X ÏÔ! ;{ GÕ={ Ö \" Ï×! ÏØ!ÃÙ!ÃÚ!Û ÃÜ!Ý ÃÞ!ß Ãà!áÍ!§ ÍK¶ âÍ! ¶ á! ¶ ÌÍ!Ãã!áä!Ë äKÚ âä! Ú á$! Ú $#Ìä!Ãå!Ãæ!ç(ç)êç!ë Ãì!Ãí!Ãî!Ãï!Ãð!1ò 1ó1!ô õ!,ç6,q÷p!(6øed\")-6>ù)ú;ü=Ãþ!ÿ @ A ç!ÃB !C B.ÕWlÕ.D .!E F !G ù" [primary forms--mode-setup kill-all-local-variables make-local-variable forms-file forms-number-of-fields forms-format-list forms-field-sep forms-read-only forms-multi-line forms-forms-scroll forms-forms-jump fmakunbound forms-new-record-filter eval-current-buffer error "'forms-file' has not been set" "'forms-number-of-fields' has not been set" 0 "'forms-number-of-fields' must be > 0" "'forms-field-sep' is not a string" 1 string= "'forms-multi-line' is equal to 'forms-field-sep'" "'forms-multi-line' must be nil or a one-character string" forms--number-of-markers forms--markers forms--process-format-list forms--format forms--make-format forms--parser forms--make-parser forms--new-record-filter fboundp boundp forms--modified-record-filter forms-modified-record-filter forms--dynamic-text forms-fields nil buffer-read-only buffer-file-name auto-save-mode erase-buffer forms--file-buffer forms--total-records forms--current-record forms--the-record-list forms--search-rexexp forms-mode-map make-keymap forms--mode-commands forms--change-commands find-file-noselect ro bury-buffer count-lines t forms-mode major-mode "Forms" mode-name minor-mode-alist forms--set-minor-mode forms--set-keymaps set-buffer-modified-p revert-buffer-function forms-revert-buffer forms-jump-record run-hooks forms-mode-hooks forms--help] 3))
(defun forms--process-format-list nil "\
Validate forms-format-list and set some global variables." (byte-code "ÀÁÂ\"\n ÃÄ!\n< ÃÅ!Æ\nÆ \nË\n³ Ì\n!Í\n!9G Ð!G Ñ!;£ Ò! ÆXc Vk ÃÔ#TV£ £ < ÕÌ!!£ ÃÖ×Ì!!\"£ ÃØ×!\"\nÙ\nCË#*$ +ÀÚÂ\"Û\n!ÀÜÂÇ#ÝË\"" [forms--debug "forms-forms-list before 1st pass:\n" forms-format-list error "'forms-format-list' has not been set" "'forms-format-list' is not a list" 0 forms--number-of-markers field-num this-item the-list nil car-safe cdr-safe rem el boundp eval numberp forms-number-of-fields "Forms error: field number %d out of range 1..%d" fboundp "Forms error: not a function: %s" prin1-to-string "Invalid element in 'forms-format-list': %s" append "forms-forms-list after 1st pass:\n" forms--concat-adjacent "forms-forms-list after 2nd pass:\n" make-vector forms--markers] 6))
(defun forms--make-format nil "\
Generate format function for forms" (byte-code "À !ÃÂ!" [forms--format-maker forms-format-list forms--format forms--debug] 2))
(defun forms--format-maker (the-format-list) "\
Returns the parser function for forms" (byte-code "ÀÂÃÄÂÅÆ\"\"\")" [0 the-marker append (lambda (arg) (setq forms--dynamic-text nil)) apply mapcar forms--make-format-elt the-format-list] 7))
Concatenate adjacent strings in the-list and return the resulting list" (byte-code ":' ÁA!@;! \n@;! @\n@P\nAB% @\nB)" [the-list forms--concat-adjacent the-rest] 2))
(defun forms--make-parser nil "\
Generate parser function for forms" (byte-code "À !ÃÂ!" [forms--parser-maker forms-format-list forms--parser forms--debug] 2))
(defun forms--parser-maker (the-format-list) "\
Returns the parser function for forms" (byte-code "ÀÄÀC\"ÆÀÄÇÈÄÉÊ \"\"\"E+" [nil the--format-list seen-text the-field append the-format-list lambda (let (here) (goto-char (point-min))) apply mapcar forms--make-parser-elt] 9))
(byte-code "ÀÁMÂÃM" [forms--make-parser-elt (lambda (el) (byte-code ";A ) ÂÃÄÅÆCÇ#DÈÉEEÊË SÌÍÎÏGEEFE; ÃÄÐÑ!DDÈÒEEÓGDDÔÖ×!U Q ÈØ #Öe ÊË SÙFC< ~ ÚÛÜÝÊË SÞFß%C àÔÖ" [el the-field (setq here (point)) if not append (search-forward) (nil t nil) error "Parse error: cannot find \"%s\"" aset the-recordv buffer-substring here - (point) looking-at regexp-quote "Parse error: not looking at \"%s\"" forward-char t seen-text nil numberp "Cannot parse adjacent fields %d and %d" (buffer-substring (point) (point-max)) list let ((here (point)) (the-dyntext (car-safe forms--dynamic-text))) (if (not (search-forward the-dyntext nil t nil)) (error "Parse error: cannot find \"%s\"" the-dyntext)) (buffer-substring here (- (point) (length the-dyntext))) (setq forms--dynamic-text (cdr-safe forms--dynamic-text)) ((let ((the-dyntext (car-safe forms--dynamic-text))) (if (not (looking-at (regexp-quote the-dyntext))) (error "Parse error: not looking at \"%s\"" the-dyntext)) (forward-char (length the-dyntext)) (setq forms--dynamic-text (cdr-safe forms--dynamic-text))))] 10)) forms--set-minor-mode (lambda nil (byte-code " Á" [forms-read-only " View" minor-mode-alist] 2))] 2)
(defun forms--set-keymaps nil "\
Set the keymaps used in this mode." (byte-code " Á\n!ÁÃ !ÄÅ Æ\n#ÄÅ ÇÈ#" [forms-read-only use-local-map forms-mode-map make-sparse-keymap define-key current-local-map "" " " forms-next-field] 4))